#1、open函数用于打开文件，open（文件路径，打开方式，字符编码）
    #文件路径，可以写绝对路径，也可以写相对路径
    #打开方式：r只读，w重写，a追加，b二进制(通常用来读写图片文件),r+可读可写
    #字符编码英文不需要考虑，中文有unicode、gbk、utf-8等方式，必须与文件的字符编码一致才能正确读取中文
#2.1、read函数用于读取文件内容
    #read()读取全文
    #read(n)读取n个字符
        #如果多次读取n个字符，是接着往后读，不是从0开始读
        #\n也算1个字符
#案例1.打开文件，读取全部内容。
# f=open(r'.\file001.txt','r')    #相对路径，不写字符编码方式默认unicode
# t=f.read()
# print(t)
# f.close()
#
# f=open(r'D:\study_python128\file001.txt','r',encoding='utf-8')
# t=f.read()
# print(t)
# f.close()
#
# #案例2.打开文件，连续读取5个字符。
# f=open(r'D:\study_python128\file001.txt','r',encoding='utf-8')
# t=f.read(5)
# print(t)
# t=f.read(5)
# print(t)
# f.close()

#2.2、readlines函数，用于读取文件行
    #会返回一个列表，列表的每个元素都是文件的一行内容

#案例3.打开文件，按行读取内容
# f=open(r'D:\study_python128\file001.txt','r',encoding='utf-8')
# t=f.readlines()
# print(t)
# f.close()

#3、write函数用于写入内容
    #打开方式w重写，如果文件不存在会新建文件，每次打开文件会先清空文件，再写入。
    #打开方式a重写，如果文件不存在会创建文件，每次都在文件尾部追加内容。
# f=open(r'D:\study_python128\file002.txt','w',encoding='utf-8')
# t=f.write('天青色等烟雨，而我在等你。\n')
# f.close()
# f=open(r'D:\study_python128\file002.txt','a',encoding='utf-8')
# t=f.write('炊烟袅袅升起，隔江千万里。\n')
# f.close()

# f1=open(r'C:\Users\Administrator\Desktop\wym.jpg','rb')
# t=f1.read()
# f1.close
#
# f2=open(r'D:\study_python128\wym.jpg','wb')
# f2.write(t)
# f2.close
#4、close()函数用于关闭文件
#5、内部库csv模块，可以用于读取csv文件
    #csv文件，既可以用记事本读取，也可以用excel读取
# import csv
# f=open(r'D:\study_python128\file004.csv','r')
# reader=csv.DictReader(f)
# for l in reader:
#     print (l)
# f.close()
#
# f1=open(r'C:\Users\Administrator\Desktop\file005.csv','r')
# reader=csv.DictReader(f1)
# for i in reader:
#     print (i)
# f1.close()
#案例5、读取csv文件中第二行数据的sname和age
# import csv
# f=open(r'D:\study_python128\file004.csv','r')
# reader=csv.DictReader(f)    #实例化对象reader，把f作为实参传递到DictReader类中
# list=[] #定义一个空列表
# for l in reader:    #遍历reader，就是读取csv文件的每一行内容形成字典
#     list.append(l)  #把每行内容添加到列表中
# print (list)    #list是一个列表，列表中的每个元素都是一个字典]
# print(list[1]['sname'],list[1]['age'])  #读取列表list的第2个元素它是一个字典，读取字典lst[1]的sname和age键
# f.close()

